Перейти к основному содержимому

2.01. Linux

Разработчику Архитектору Инженеру

Linux

Linux – семейство открытых ОС, основанных на ядре Linux (Linux kernel), созданном Линусом Торвальдсом в 1991 году. В отличие от Windows и macOS, Linux не принадлежит одной компании. Это проект с открытым исходным кодом, который развивается сообществом разработчиков по всему миру. Само ядро Linux – лишь часть ОС, а полноценная система включает в себя множество программ из проектов GNU, X Window System, драйверов, утилит и т.д.


1. Как устроен Linux?

Архитектура Linux включает в себя следующие компоненты:

  • Ядро (Kernel) – управляет взаимодействием с оборудованием;
  • Оболочка (Shell) – интерфейс командной строки;
  • Утилиты GNU – стандартные инструменты работы с системой;
  • Файловая система – структура хранения данных;
  • Менеджер окон / DE (Desktop Environment) – графическая оболочка;
  • Пакетный менеджер – установка и удаление ПО;
  • Службы (system, init) – запуск и управление процессами.

Первое, что заметит пользователь Windows – обилие команд через CLI, а также крайне большое сокращение всего, что можно. Если Windows рассчитана на простых пользователей, в том числе офисных, которым проще пояснить полное название, с подсказками и подробностями, а также на родном языке, в графическом интерфейсе, то в Linux расчёт идёт на простоту и удобство для разработчиков.

А разработчики люди другие – им важно, чтобы пришлось «писать меньше букв», они работают по-другому. Поэтому, в Linux, даже открыв файловую систему, можно увидеть, что все стандартные директории называются кратко вроде «root», «home». Никаких длинных путей, всё просто и быстро. Аналогично и работа с программами – чтобы что-то скачать и установить, порой не придётся идти на сайт дистрибутива и долго мучаться с пользовательским интерфейсом. Разработчики привыкли к коду, поэтому им проще найти гайд, вбить нужную команду в консоль и всё установится автоматически. А в использовании, проще опять же – вбить команду в консоль и выполнять, чем сидеть и настраивать кнопочки, галочки и прочие элементы в интерфейсе.

image-2.png


Компоненты

1. Ядро

Ядро Linux – сердце системы. Отвечает за управление процессором (планировщик задач), управление памятью, работу с дисками и файловыми системами, сетевые подключения, драйверы устройств, безопасность. Выпускается регулярно, каждые 2-3 месяца. Существуют, конечно, и долгосрочные версии (LTS, Long Term Support) – поддерживаются 2-4 года.


2. Дистрибутивы

Linux – не одна ОС, а семейство ОС, называемых дистрибутивами (distributions). Они различаются по цели использования, простоте, стабильности и другим параметрам.

Классификация дистрибутивов.

По типу пакетного менеджера:

  • Debian / Ubuntu - .deb, apt;
  • Red Hat / CentOS / Fedora - .rpm, dnf / yum;
  • Arch Linux – pacman;
  • SUSE / openSUSE – zipper.

По назначению:

  • для начинающих: Ubuntu, Linux Mint, Elementary OS;
  • для серверов: CentOS, RHEL, Debian;
  • для разработчиков: Arch Linux, Fedora Workstation;
  • Live-CD дистрибутивы: Kali Linux (безопасность), Tails (анонимность), Knoppix.

Говоря о дистрибутивах, их просто великое множество - всё из-за открытости ОС. Есть и общепринятые качественные оболочки, есть и простые, а можно встретить всякое - ОС с жесточайшим контролем, используемые в определённых странах (допустим, Северная Корея), оболочки в стиле аниме, различных звёзд. Есть игровые вроде SteamOS, есть и безумные - к примеру, Suicide Linux удаляет все файлы при любой ошибке в терминале.


3. Среда и ключевое ПО

Среда и ключевое ПО, службы.

Графическая среда (DE):

  • GNOME – современный, официальный для Fedora, Ubuntu;
  • KDE Plasma – мощный, гибкий, красивый;
  • XFCE – легковесный, подходит для старых машин;
  • LXQt / MATE / Cinnamon – альтернативы.

Графическую среду можно установить отдельно, через командную строку.

Службы (services). Linux использует:

  • systemd – современная система инициализации и управления службами;
  • init – старая система (SysVinit).

Зачем это всё нужно? И почему мы снова перешли в перечисления? Что за странные названия и сокращения?

Смысл в том, что Linux, в отличие от Windows, не ограничена правами одной корпорации, а развивается целым сообществом разработчиков. Каждый делает что-то, изобретает инструменты, делится с другими, и совместными усилиями «рождаются» новые службы, оболочки, утилиты. А ядро Linux и система пакетов позволяет просто взять и поставить себе любой из них, собрав из всех компонентов своего «монстра Франкенштейна».


4. Инструменты

Полезные инструменты в Linux

  • top / htop – мониторинг процессов;
  • df / du – информация о дисковом пространстве;
  • ls / cp / mv / rm – работа с файлами;
  • grep / sed / awk – обработка текста;
  • find – поиск файлов;
  • chmod / chown – управление правами доступа;
  • tar / zip / gzip – архивирование;
  • curl / wget – загрузка данных из интернета;
  • ssh / scp / rsync – удалённый доступ и копирование;
  • nmcli / ip / ifconfig – сетевые настройки;
  • apt / dnf / pacman – пакетные менеджеры.

5. Сеть

Работа с сетью.

Управление сетью выполняется через:

  • NetworkManager – графический менеджер подключений;
  • system-networkd – для серверов;
  • nmcli – CLI для NetworkManager.

Примеры работы с сетью:

ip a                                # информация о IP-адресах
ping google.com # проверка связи
traceroute google.com # маршрут до сервера
netstat -tuln # активные порты
ss -tuln # более быстрая замена netstat
nmap -p 1-1000 192.168.1.1 # сканирование портов
dig example.com # DNS-запросы

Далее, в главе, посвящённой системному администрированию, мы ещё погрузимся в Linux. На текущий момент продолжим изучение других ОС.